public class DecimalValidator {

    /**
     * 验证字符串中的小数点后必须有4位数字，并且整数部分必须存在。
     *
     * @param decimalString 待验证的字符串
     * @throws IllegalArgumentException 如果验证失败
     */
    public static void validateDecimal(String decimalString) throws IllegalArgumentException {
        // 正则表达式：整数部分必须存在，小数点后必须恰好有4位数字
        String regex = "^-?\\d+\\.\\d{4}$";

        if (!decimalString.matches(regex)) {
            throw new IllegalArgumentException("The decimal number must have an integer part and exactly 4 digits after the decimal point.");
        }
    }

    public static void main(String[] args) {
        try {
            // 测试数据
            validateDecimal("123.4567");
            System.out.println("Validation passed.");

            validateDecimal("123.456"); // 应该抛出异常
            System.out.println("Validation passed."); // 不应达到此处
        } catch (IllegalArgumentException e) {
            System.err.println("Validation failed: " + e.getMessage());
        }

        try {
            validateDecimal(".4567"); // 应该抛出异常
            System.out.println("Validation passed."); // 不应达到此处
        } catch (IllegalArgumentException e) {
            System.err.println("Validation failed: " + e.getMessage());
        }

        try {
            validateDecimal("123"); // 应该抛出异常
            System.out.println("Validation passed."); // 不应达到此处
        } catch (IllegalArgumentException e) {
            System.err.println("Validation failed: " + e.getMessage());
        }
    }
}